package pri.zjy.interview;

/**
 * @author zhangjy
 * @description
 * @date 2025/5/15 16:34
 */
public class Test1 {

    public static void main(String[] args) {
        Test1 test1 = new Test1();
//        int n = 6;
        int n = 13;
        System.out.println(test1.count(n));
    }

    /**
     * 题目：统计完数的数量
     * 一个数的因子就是所有可以整除这个数的数，不包括这个数自身。比如，6的因子是1，2，3
     * 一个数如果恰好等于它的因子之和，这个数就称为“完数“。 例如6=1＋2＋3
     * 请编写一个函数，入参是一个正整数n，返回值是0到n之间（闭区间）的完数的个数
     */
    public int count(int n) {
        if (n == 0) return 0;

        int ans = 0, sum = 0;
        for (int i = 1; i <= n; i++) {
            // 不包括本身
            for (int j = 1; j < i; j++) {
                // 判断是否为因子，因子则累加
                if (i % j == 0) sum += j;
            }
            // 记录完数
            if (sum == i) ans++;
            // sum初始化
            sum = 0;
        }

        return ans;
    }

}
